(deftemplate animalPreferat
(slot nume)
)
(deftemplate intrebare
(slot stringIntrebare)
(slot raspuns)
)
(assert (intrebare (stringIntrebare nil)(raspuns nil)))
(defrule q1
(intrebare (stringIntrebare nil)(raspuns nil))
=>
(printout t "Este un animal mare ? (DA/NU)" crlf)
(bind ?r (read))
(assert (intrebare (stringIntrebare "Este un animal mare?")(raspuns ?r)))
)
(defrule q2
(intrebare (stringIntrebare "Este un animal mare?")(raspuns DA))
=>
(printout t "Mananca soareci ? (DA/NU)" crlf)
(bind ?r (read))
(assert (intrebare (stringIntrebare "Mananca soareci?")(raspuns ?r)))
)
(defrule q3
(intrebare (stringIntrebare "Este un animal mare?")(raspuns NU))
=>
(printout t "Mananca alune ? (DA/NU)" crlf)
(bind ?r (read))
(assert (intrebare (stringIntrebare "Mananca alune?")(raspuns ?r)))
)
(defrule veverita
(intrebare (stringIntrebare "Mananca alune?")(raspuns DA))
=>
(printout t "Animalul preferat este o veverita" crlf)
)
(defrule soarece
(intrebare (stringIntrebare "Mananca alune?")(raspuns NU))
=>
(printout t "Animalul preferat este un soricel" crlf)
)
(defrule q4
(intrebare (stringIntrebare "Mananca soareci?")(raspuns NU))
=>
  (printout t "Stie sa inoate ? (DA/NU)" crlf)
(bind ?r (read))
(assert (intrebare (stringIntrebare "Stie sa inoate")(raspuns ?r)))
)
(defrule pisica
(intrebare (stringIntrebare "Mananca soareci")(raspuns DA))
=>
(printout t "Animalul preferat este o pisica" crlf)
)
(defrule q5
(intrebare (stringIntrebare "Stie sa inoate?")(raspuns NU))
=>
(printout t "Este ierbivor ? (DA/NU)" crlf)
(bind ?r (read))
(assert (intrebare (stringIntrebare "Este ierbivor?")(raspuns ?r)))
)
(defrule ratusca
(intrebare (stringIntrebare "Stie sa inoate?")(raspuns DA))
=>
(printout t "Animalul preferat este o ratusca" crlf)
)
(defrule q6
(intrebare (stringIntrebare "Este ierbivor?")(raspuns NU))
=>
(printout t "Apara casa ? (DA/NU)" crlf)
(bind ?r (read))
(assert (intrebare (stringIntrebare "Apara casa")(raspuns ?r)))
)
(defrule cal
(intrebare (stringIntrebare "Este ierbivor?")(raspuns DA))
=>
(printout t "Animalul preferat este un cal" crlf)
)
(defrule q7
(intrebare (stringIntrebare "Apara casa?")(raspuns DA))
=>
(printout t "Animalul preferat este un caine " crlf)
)  
(run)
(facts)
